import axios from 'axios'
import router from "@/router";
import { Message } from "element-ui";

// 创建 axios 实例
const instance = axios.create({
    baseURL: 'http://localhost:8080',
    timeout: 10000,
    headers: {
        'Content-Type': 'application/json',
    }
})

// 添加请求拦截器
instance.interceptors.request.use(
    config => {
        //在发送请求之前做些什么
        const token = localStorage.getItem('jwt_token');
        if (token) {
            config.headers['token'] = token;
        }
        return config
    },
    error => {
        // 对请求错误做些什么
        return Promise.reject(error)
    }
)

// 添加响应拦截器
instance.interceptors.response.use(
    response => {
        // // 对响应数据做点什么
        // if (response.data.code === 0) {
        //     // 假设非0的 code 是错误，统一处理错误消息
        //    this.$message.error(response.data.msg);
        // }
        return response;
    },
    error => {
        // 对响应错误做点什么
        // 对响应错误做点什么
        if (error.response && error.response.status === 401) {
            // 清除本地存储中的 JWT token
            localStorage.removeItem('jwt_token');
            // 跳转到登录页
            router.push('/AdminLogin').catch(error => {
                console.log(error)
            })
        }else if (error.code === 'ERR_NETWORK') {
            // 连接被拒绝错误,可能是后端服务未启动
            Message.error("连接被拒绝,"+error.message)
        }else if (error.code === 'ECONNABORTED') {
            // 请求超时错误
            Message.error('请求超时,请检查网络连接')
        }
        else {
            // 其他错误,可以进行一些错误处理
            Message.error(error.message)
            console.error(error)
        }
        // 处理请求错误
        return Promise.reject(error);
    }
)

// // 添加统一的错误显示方法
// instance.showError = (message) => {
//     // 假设你在 Vue 组件中调用此方法
//     if (typeof window !== 'undefined' && window.Vue && window.Vue.prototype.$message) {
//         window.Vue.prototype.$message.error(message);
//     } else {
//         // 如果 $message 不存在，使用 alert 作为备用方案
//         alert(message);
//     }
// }

export default instance;